x86 hvm: Support interrupt delivery for PIT channel 0 when in modes 3 and 4.
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 6 May 2008 15:20:24 +0000 (16:20 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 6 May 2008 15:20:24 +0000 (16:20 +0100)
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/arch/x86/hvm/i8254.c

index 493b7317b9ec8c5fb1cabecc65d72d88352976c6..c41783feb0748c4fe944a26552ff3b7561e3a6e1 100644 (file)
@@ -206,19 +206,21 @@ static void pit_load_count(PITState *pit, int channel, int val)
 
     switch ( s->mode )
     {
-        case 2:
-            /* Periodic timer. */
-            create_periodic_time(v, &pit->pt0, period, 0, 0, pit_time_fired, 
-                                 &pit->count_load_time[channel]);
-            break;
-        case 1:
-            /* One-shot timer. */
-            create_periodic_time(v, &pit->pt0, period, 0, 1, pit_time_fired,
-                                 &pit->count_load_time[channel]);
-            break;
-        default:
-            destroy_periodic_time(&pit->pt0);
-            break;
+    case 2:
+    case 3:
+        /* Periodic timer. */
+        create_periodic_time(v, &pit->pt0, period, 0, 0, pit_time_fired, 
+                             &pit->count_load_time[channel]);
+        break;
+    case 1:
+    case 4:
+        /* One-shot timer. */
+        create_periodic_time(v, &pit->pt0, period, 0, 1, pit_time_fired,
+                             &pit->count_load_time[channel]);
+        break;
+    default:
+        destroy_periodic_time(&pit->pt0);
+        break;
     }
 }